home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 003 / sox_2 / sox / h / g72x < prev    next >
Text File  |  1993-09-23  |  3KB  |  104 lines

  1. /*
  2.  * This source code is a product of Sun Microsystems, Inc. and is provided
  3.  * for unrestricted use.  Users may copy or modify this source code without
  4.  * charge.
  5.  *
  6.  * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING
  7.  * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  8.  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  9.  *
  10.  * Sun source code is provided with no support and without any obligation on
  11.  * the part of Sun Microsystems, Inc. to assist in its use, correction,
  12.  * modification or enhancement.
  13.  *
  14.  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  15.  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE
  16.  * OR ANY PART THEREOF.
  17.  *
  18.  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  19.  * or profits or other special, indirect and consequential damages, even if
  20.  * Sun has been advised of the possibility of such damages.
  21.  *
  22.  * Sun Microsystems, Inc.
  23.  * 2550 Garcia Avenue
  24.  * Mountain View, California  94043
  25.  */
  26.  
  27. /*
  28.  * g72x.h
  29.  *
  30.  * Header file for CCITT conversion routines.
  31.  *
  32.  */
  33. #ifndef _G72X_H
  34. #define    _G72X_H
  35.  
  36. #define    AUDIO_ENCODING_ULAW    (1)    /* ISDN u-law */
  37. #define    AUDIO_ENCODING_ALAW    (2)    /* ISDN A-law */
  38. #define    AUDIO_ENCODING_LINEAR    (3)    /* PCM 2's-complement (0-center) */
  39.  
  40. /*
  41.  * The following is the definition of the state structure
  42.  * used by the G.721/G.723 encoder and decoder to preserve their internal
  43.  * state between successive calls.  The meanings of the majority
  44.  * of the state structure fields are explained in detail in the
  45.  * CCITT Recommendation G.721.  The field names are essentially indentical
  46.  * to variable names in the bit level description of the coding algorithm
  47.  * included in this Recommendation.
  48.  */
  49. struct g72x_state {
  50.     long yl;    /* Locked or steady state step size multiplier. */
  51.     short yu;    /* Unlocked or non-steady state step size multiplier. */
  52.     short dms;    /* Short term energy estimate. */
  53.     short dml;    /* Long term energy estimate. */
  54.     short ap;    /* Linear weighting coefficient of 'yl' and 'yu'. */
  55.  
  56.     short a[2];    /* Coefficients of pole portion of prediction filter. */
  57.     short b[6];    /* Coefficients of zero portion of prediction filter. */
  58.     short pk[2];    /*
  59.              * Signs of previous two samples of a partially
  60.              * reconstructed signal.
  61.              */
  62.     short dq[6];    /*
  63.              * Previous 6 samples of the quantized difference
  64.              * signal represented in an internal floating point
  65.              * format.
  66.              */
  67.     short sr[2];    /*
  68.              * Previous 2 samples of the quantized difference
  69.              * signal represented in an internal floating point
  70.              * format.
  71.              */
  72.     char td;    /* delayed tone detect, new in 1988 version */
  73. };
  74.  
  75. /* External function definitions. */
  76.  
  77. extern void g72x_init_stat(P1(struct g72x_state *));
  78. extern int g721_encoder(P3(
  79.         int sample,
  80.         int in_coding,
  81.         struct g72x_state *state_ptr));
  82. extern int g721_decoder(P3(
  83.         int code,
  84.         int out_coding,
  85.         struct g72x_state *state_ptr));
  86. extern int g723_24_encoder(P3(
  87.         int sample,
  88.         int in_coding,
  89.         struct g72x_state *state_ptr));
  90. extern int g723_24_decoder(P3(
  91.         int code,
  92.         int out_coding,
  93.         struct g72x_state *state_ptr));
  94. extern int g723_40_encoder(P3(
  95.         int sample,
  96.         int in_coding,
  97.         struct g72x_state *state_ptr));
  98. extern int g723_40_decoder(P3(
  99.         int code,
  100.         int out_coding,
  101.         struct g72x_state *state_ptr));
  102.  
  103. #endif /* !_G72X_H */
  104.